package com.hanxiaozhang.autocinfigure;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.HashMap;
import java.util.Map;

/**
 * 〈一句话功能简述〉<br>
 * 〈配置文件〉
 *
 * @author hanxinghua
 * @create 2022/8/30
 * @since 1.0.0
 */
@Data
@ConfigurationProperties(prefix = "distributed-lock")
public class DistributedLockProperties {

    // ------ zk ------
    /**
     * zk地址
     */
    private String zkAddress = "127.0.0.1:2181";

    /**
     * zk锁地址前缀
     */
    private String zkLockPathPrefix = "/zk-lock";

    /**
     * zk锁地址
     */
    private String zkLockProjectPath = "/";


    /**
     * zk清除无效节点开关
     */
    private Boolean zkClearInvalidNode = true;


    /**
     * zk清除无效节点频率，单位秒
     */
    private Integer zkClearInvalidNodeRate = 3600;

    /**
     * zk清除无效节点开始时间，单位秒
     */
    private AsteriskMultiply zkClearInvalidNodeBeforeTime = AsteriskMultiply.of(86400);


    // ------ redis ------
    /**
     * Redis模式
     */
    private String redisModel;

    /**
     * Redis地址
     */
    private String redisAddress;

    /**
     * Redis密码
     */
    private String redisPassword;

    /**
     * Redis数据库（database）
     */
    private Integer redisDb;

    /**
     * Redis主节点地址
     */
    private String redisMasterAddress;

    /**
     * Redis从节点地址
     */
    private String redisSlaveAddresses;

    /**
     * Redis Master名称
     */
    private String redisMasterName;

    /**
     * Redis哨兵地址
     */
    private String redisSentinelAddress;


    /**
     * 其他配置信息
     */
    private Map<String, String> properties = new HashMap<>();


}
